const list = {
  input: {
    // 对应数据库内类型
    category: 'input',
    // 类型
    type: 'text',
    // 显示类型Arr
    typeArr: ['text', 'textarea'],
    // 控件左侧label内容
    label: '输入框',
    placeholder: '请输入',
    // 最大长度
    max: 30,
    min: 0,
    value: '',
    // 表单name
    name: 'input'
  },
  select: {
    // 对应数据库内类型
    category: 'select',
    // 控件左侧label内容
    label: '下拉框',
    placeholder: '请选择',
    // 选项内数据
    option: option(),
    // 绑定的值
    value: '',
    // 表单name
    name: 'select'

  },
  datePicker: {
    category: 'datePicker',
    // 显示类型
    type: 'date',
    // 显示类型Arr
    typeArr: ['year', 'date', 'dates', 'week', 'datetime', 'datetimerange', 'daterange'],
    // 返回类型
    format: 'yyyy-MM-dd',
    // 返回类型Arr
    formatArr: ['yyyy-mm-dd', 'yyyy-mm-dd hh-mm-ss', 'timestamp'],
    // 范围选择时开始日期的占位内容
    startPlaceholder: '开始日期',
    // 范围选择时结束日期的占位内容
    endPlaceholder: '结束日期',
    // 控件左侧label内容
    label: '日期',
    placeholder: '日期',
    // 绑定的值
    value: '',
    // 表单name
    name: 'datePicker'

  },
  timeSelect: {
    category: 'timeSelect',
    // 时间步长
    step: '00:30',
    // 开始时间
    start: '00:00',
    // 结束时间
    end: '23:30',
    // 范围选择时开始日期的占位内容
    startPlaceholder: '开始时间',
    // 范围选择时结束日期的占位内容
    endPlaceholder: '结束时间',
    // 控件左侧label内容
    label: '时间选择器',
    placeholder: '请选择',
    // 绑定的值
    value: '',
    // 表单name
    name: 'timeSelect',
    endName: ''
  },
  cascader: {
    category: 'cascader',
    // 控件左侧label内容
    label: '级联选择器',
    placeholder: '请选择',
    option: cascaderoption('一级', cascaderoption('二级')),
    // 绑定的值
    value: '',
    // 表单name
    name: 'cascader'
  },
  radio: {
    category: 'radio',
    // 控件左侧label内容
    label: '单选',
    option: option(),
    // 绑定的值
    value: '',
    // 按钮模式
    radioButton: false,
    // 表单name
    name: 'radio'

  },
  checkbox: {
    category: 'checkbox',
    // 控件左侧label内容
    label: '复选',
    option: option(),
    // 绑定的值
    value: '',
    // 表单name
    name: 'checkbox'

  },
  switch: {
    category: 'switch',
    // 控件左侧label内容
    label: '开关',
    // 绑定的值
    value: false,
    // 表单name
    name: 'switch'
  },
  rate: {
    category: 'rate',
    // 控件左侧label内容
    label: '评分',
    // 绑定的值
    value: 0,
    // 表单name
    name: 'switch',
    textColor: '#ff9900',
    // 只读的评分用来展示分数，允许出现半星
    showScoreTemplate: false,
    // 用辅助文字直接地表达对应分数
    showText: true
  },
  colorPicker: {
    category: 'colorPicker',
    // 控件左侧label内容
    label: '颜色选择器',
    // 绑定的值
    value: null,
    // 表单name
    name: 'colorPicker'
  },
  inputNumber: {
    category: 'inputNumber',
    // 控件左侧label内容
    label: '计数器',
    // 绑定的值
    value: null,
    // 表单name
    name: 'inputNumber',
    min: 0,
    max: 99999,
    controlsPosition: null,
    size: 'large'
  },
  slider: {
    category: 'slider',
    // 控件左侧label内容
    label: '滑块',
    // 表单name
    name: 'slider',
    // 离散值
    step: 1,
    min: 0,
    max: 100,
    // 是否竖向模式
    vertical: false,
    // 带有输入框
    showInput: false
  }
}
const commons = {
  // 是否单独显示一行
  block: false,
  // 是否必填
  require: false,
  // 验证错误提示信息
  ruleError: '',
  // 是否关联字段
  relation: false,
  // 关联字段name
  relation_name: '',
  // 关联字段value
  relation_value: '',
  // 是否被渲染
  visibility: true,
  // 外部style样式
  style: null,
  // 外部class样式
  class: null,
  // 栅格
  span: 24
}
for (const key in list) list[key] = Object.assign({}, list[key], commons)
export default list
function cascaderoption(name, c) {
  return Array.apply(null, { length: 2 }).map((k, v) => {
    return {
      value: name + (v + 1),
      label: name + (v + 1),
      children: c
    }
  })
}

function option(label) {
  return Array.apply(null, { length: 2 })
    .map((k, v) => {
      return {
        value: v + 1,
        label: '选项' + (v + 1)
      }
    })
}

